package com.yidu.hbatsft.service.impl;

import com.github.pagehelper.PageHelper;
import com.yidu.hbatsft.dao.AtsSchemeAthleteMapper;
import com.yidu.hbatsft.dao.AtsSchemeAuditMapper;
import com.yidu.hbatsft.dao.AtsSchemeExpertMapper;
import com.yidu.hbatsft.dao.AtsSchemeMapper;
import com.yidu.hbatsft.domain.AtsScheme;
import com.yidu.hbatsft.domain.AtsSchemeAthlete;
import com.yidu.hbatsft.domain.AtsSchemeAudit;
import com.yidu.hbatsft.domain.AtsSchemeExpert;
import com.yidu.hbatsft.service.AtsSchemeServiceNutrition;
import com.yidu.privilege.Utils.Pages;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Iterator;
import java.util.List;

/**
 * 运动营养Service实现类
 */
@Service
public class AtsSchemeServiceNutritionImpl implements AtsSchemeServiceNutrition{

    //方案表
    @Resource
    AtsSchemeMapper atsSchemeMapper;
    //方案对应的运动员表
    @Resource
    AtsSchemeAthleteMapper atsSchemeAthleteMapper;

    //专家咨询表
    @Resource
    AtsSchemeExpertMapper exp;

    //审核表
    @Resource
    AtsSchemeAuditMapper aut;


    /**
     * 运动营养查询全部
     * @param record
     * @return
     */
    @Override
    public List<AtsScheme> selectnutrition(AtsScheme record, Pages pages) {
      List<AtsScheme>  list = atsSchemeMapper.selectnutrition(record,pages);
        return list;
    }

    /**
     * 运动营养查询总行数
     */
    @Override
    public Long selectnutritioncount(AtsScheme record) {
        Long  longs =  atsSchemeMapper.selectnutritioncount(record);
        return longs;
    }

    /**
     * 运动营养新增
     */
    @Override
    public int insertnutrition(AtsScheme record) {
        int t =  atsSchemeMapper.insertnutrition(record);
        return t;
    }

    /**
     * 运动营养逻辑删除
     */
    @Override
    public int deletenutrition(Integer schemeId) {
        int s =  atsSchemeMapper.deletenutrition(schemeId);
        return s;
    }

    /**
     * 运动营养根据id查询
     */
    @Override
    public AtsScheme selectnutritionid(Integer schemeId) {
        AtsScheme atsScheme  = atsSchemeMapper.selectnutritionid(schemeId);
        return atsScheme;
    }

    /**
     * 运动营养修改
     */
    @Override
    public int updatenutrition(AtsScheme record) {
        int update =  atsSchemeMapper.updatenutrition(record);
        return update;
    }

    /**
     * 运动营养模糊查询
     */
    @Override
    public List<AtsScheme> selectnutritionVague(String newTitle) {
        List<AtsScheme> vague =   atsSchemeMapper.selectnutritionVague(newTitle);
        return vague;
    }


    /**
     * 运动营养批量删除
     */
    @Override
    public int update(Integer schemeId) {
        int rows = atsSchemeMapper.deletenutrition(schemeId);
        atsSchemeAthleteMapper.updatestate(schemeId);
        return rows;
    }

    /**
     * 运动营养新增
     */
    @Override
    public int add(AtsScheme record) {
        int rows = atsSchemeMapper.insertSelective(record);
        return rows;
    }

    /**
     * 新增方案对应的运动员
     * @param at
     * @return
     */
    @Override
    public int addAtsSchemeAthlete(AtsSchemeAthlete at){
       int rows =  atsSchemeAthleteMapper.insert(at);
       return rows;
    }


    /**
     * 运动营养修改
     */
    @Override
    public int updateone(AtsScheme record) {
        int rows =  atsSchemeMapper.updatenutrition(record);
        return rows;
    }

    /**
     * 方案对应的运动员表修改
     * @param at
     * @return
     */
    @Override
    public int updatetwo(AtsSchemeAthlete at) {
        int rows = atsSchemeAthleteMapper.updateByPrimaryKey2(at);
        return rows;
    }


    /**
     * 运用营养 查询按钮功能
     * @param id
     * @return
     */
    @Override
    public AtsScheme nutritionfindAllById(Integer id) {
        AtsScheme ats =  atsSchemeMapper.nutritionfindAllById(id);
        return ats;
    }


    /**
     * 专家咨询修改
     */
    public int updatezj(AtsSchemeExpert record){
        int rows = exp.nutritionupdate(record);
        return rows;
    }

    /**
     * 审核表修改
     */
    public int updatesh(AtsSchemeAudit record){
        int rows = aut.nutritionupdate(record);
        return rows;
    }

    /**
     * 运动营养查询出专家的记录
     */
    @Override
    public List<AtsScheme> selectExpertnu(Integer pageNum, Integer pageSize, AtsScheme atsScheme) {
        PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.selectExpertnu(atsScheme);
    }

    /**
     * 运动营养查询出专家的记录  总行数
     */
    @Override
    public Long countExpertnu(AtsScheme atsScheme) {
        return atsSchemeMapper.countExpertnu(atsScheme);
    }

    /**
     * 运动营养查询出领导要审核的记录
     */
    @Override
    public List<AtsScheme> selectAuditnu(Integer pageNum, Integer pageSize,AtsScheme atsScheme) {
        PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.selectAuditnu(atsScheme);
    }

    /**
     * 运动营养查询出领导要审核的记录 总行数
     */
    @Override
    public Long countAuditnu(AtsScheme atsScheme) {
        return atsSchemeMapper.countAuditnu(atsScheme);
    }

    /**
     * 运动营养查询出运动员要查看的记录
     */
    @Override
    public List<AtsScheme> selectAthletenu(Integer pageNum, Integer pageSize,AtsScheme atsScheme) {
        PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.selectAthletenu(atsScheme);
    }
    /**
     * 运动营养查询出运动员要查看的记录 总行数
     */
    @Override
    public Long countAthletenu(AtsScheme atsScheme) {
        return atsSchemeMapper.countAthletenu(atsScheme);
    }

    /**
     * 运动营养查询出教练要查看的记录  申请和编辑权限
     */
    @Override
    public List<AtsScheme> findAllnu(Integer pageNum, Integer pageSize, AtsScheme atsScheme) {
       /* PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.findAllnu(atsScheme);*/
        PageHelper.startPage(pageNum,pageSize);
        List all = atsSchemeMapper.findAllnu(atsScheme);
        for (Iterator iterator = all.iterator(); iterator.hasNext(); ) {
            AtsScheme ats =  (AtsScheme)iterator.next();
            AtsSchemeExpert expert = exp.selectByschemeKey(ats.getSchemeId());
            if(expert==null||"".equals(expert.getAuditState())||expert.getAuditState()==null){
                ats.setAuditState(0);
            }else{
                ats.setAuditState(Integer.valueOf(expert.getAuditState()));
            }
        }
        return all;
    }

    /**
     * 运动营养查询出教练要查看的记录 总行数
     */
    @Override
    public Long countnu(AtsScheme atsScheme) {
        return atsSchemeMapper.countnu(atsScheme);
    }

    /**
     * 运动营养查询出超级管理员要查看的记录
     */
    @Override
    public List<AtsScheme> supers(Integer pageNum, Integer pageSize,AtsScheme atsScheme) {
        PageHelper.startPage(pageNum,pageSize);
        return atsSchemeMapper.supers(atsScheme);
    }

    /**
     * 运动营养查询出超级管理员要查看的记录 总行数
     */
    @Override
    public Long supercountnu(AtsScheme atsScheme) {
        return atsSchemeMapper.supercountnu(atsScheme);
    }





}
